package DAO;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import Hibernate.HibernateUtil;
import Negocio.Direccion;

public class HibernateDireccionDAO 
{
	private static HibernateDireccionDAO instancia = null;
	private static SessionFactory sf = null;
	
	public static HibernateDireccionDAO getInstancia()
	{
		if(instancia == null)
		{
			instancia = new HibernateDireccionDAO();
			sf = HibernateUtil.getSessionFactory();
		}
		return instancia;
	}
	
	public Direccion getDireccion(int id)
	{
        try 
        {
        	Session session=sf.openSession();
            session.beginTransaction();
            Direccion dir = (Direccion)session.get(Direccion.class, id);
            session.getTransaction().commit();
            session.close();
            return dir;
        } catch (Exception e){
            System.out.println(e);
            System.out.println("Error al cargar la Factura");
        }
        return null;
	}

	public void grabarDireccion(Direccion dir) 
	{
		try
		{
			Session session = sf.openSession();
			session.beginTransaction();
			session.save(dir);
			session.flush();
			session.getTransaction().commit();
			session.close();
		}
		catch(Exception e)
		{
			System.out.println(e);
			System.out.println("Error al grabar una Factura");
		}
	}
	
	public void updateDireccion(Direccion dir)
	{
		try
		{
			Session session = sf.openSession();
			session.beginTransaction();
			session.saveOrUpdate(dir);
			session.flush();
			session.getTransaction().commit();
			session.close();
		}
		catch (Exception e)
		{
			System.out.println(e);
            System.out.println("Error al actualizar una Factura");
		}
	}
}